package br.uniceub.fsw.academicmobile.vo;

import br.uniceub.fsw.academicmobile.dao.AlunoDAO;
import br.uniceub.fsw.academicmobile.dao.DisciplinaDAO;
import br.uniceub.fsw.academicmobile.dao.TurmaDAO;

/**
 * tabela tb_historico
 * @author Christian
 */
public class HistoricoVO {

    /**
     * Coluna ID_historico
     */
    private Integer idHistorico;
    
    /**
     * Coluna tb_turma_ID_turma
     */
    private Integer tbTurmaIdTurma;
    
    /**
     * Coluna tb_disciplina_ID_CD_disciplina
     */
    private Integer tbDisciplinaIdCdDisciplina;
    
    /**
     * Coluna tb_aluno_ID_CD_ra
     */
    private Long tbAlunoIdCdRa;
    
    /**
     * Coluna QT_frequencia
     */
    private Integer qtFrequencia;
    
    /**
     * Coluna SG_mencao
     */
    private String sgMencao;
    
    /**
    * Turma relacionada pela coluna tb_turma_ID_turma
    */
    private TurmaVO turma;
    
    /**
    * Disciplina relacionada pela coluna tb_disciplina_ID_CD_disciplina
    */
    private DisciplinaVO disciplina;
    
    /**
    * Aluno relacionado pela coluna tb_aluno_ID_CD_ra
    */
    private AlunoVO aluno;

    /**
     * Metodo que traz o objeto aluno referenciado pela classe do banco,
     * ha a necessidade do objeto historico possuir o id do aluno.
     * @return AlunoVO objeto aula referenciado pela frequencia.
     */
    public AlunoVO getAluno() {
        if(aluno==null){
            aluno = new AlunoVO();
            aluno.setIdCdRa(tbAlunoIdCdRa);
            aluno = new AlunoDAO().consultarAlunoPorId(aluno);
        }
        return aluno;
    }

    public void setAluno(AlunoVO aluno) {
        this.aluno = aluno;
    }

    /**
     * Metodo que traz o objeto disciplina referenciado pela classe do banco,
     * ha a necessidade do historico possuir o id da disciplina.
     * @return DisciplinaVO objeto disciplina referenciado pelo historico.
     */
    public DisciplinaVO getDisciplina() {
        if(this.disciplina == null){
                this.disciplina = new DisciplinaVO();
                this.disciplina.setIdCdDisciplina(this.tbDisciplinaIdCdDisciplina);
                this.disciplina = new DisciplinaDAO().consultarDisciplinaPorId(disciplina);
        }
        return disciplina;
    }

    public void setDisciplina(DisciplinaVO disciplina) {
        this.disciplina = disciplina;
    }

    public Integer getIdHistorico() {
        return idHistorico;
    }

    public void setIdHistorico(Integer idHistorico) {
        this.idHistorico = idHistorico;
    }

    public Integer getQtFrequencia() {
        return qtFrequencia;
    }

    public void setQtFrequencia(Integer qtFrequencia) {
        this.qtFrequencia = qtFrequencia;
    }

    public String getSgMencao() {
        return sgMencao;
    }

    public void setSgMencao(String sgMencao) {
        this.sgMencao = sgMencao;
    }

    public Long getTbAlunoIdCdRa() {
        return tbAlunoIdCdRa;
    }

    public void setTbAlunoIdCdRa(Long tbAlunoIdCdRa) {
        this.tbAlunoIdCdRa = tbAlunoIdCdRa;
    }

    public Integer getTbDisciplinaIdCdDisciplina() {
        return tbDisciplinaIdCdDisciplina;
    }

    public void setTbDisciplinaIdCdDisciplina(Integer tbDisciplinaIdCdDisciplina) {
        this.tbDisciplinaIdCdDisciplina = tbDisciplinaIdCdDisciplina;
    }

    public Integer getTbTurmaIdTurma() {
        return tbTurmaIdTurma;
    }

    public void setTbTurmaIdTurma(Integer tbTurmaIdTurma) {
        this.tbTurmaIdTurma = tbTurmaIdTurma;
    }

    /**
     * Metodo que traz o objeto turma referenciado pela classe do banco,
     * ha a necessidade do historico possuir o id da turma.
     * @return TurmaVO objeto turma referenciado pelo historico.
     */
    public TurmaVO getTurma() {
        if(turma==null){
            turma = new TurmaVO();
            turma.setIdTurma(tbTurmaIdTurma);
            turma = new TurmaDAO().consultarTurmaPorId(turma);
        }
        return turma;
    }

    public void setTurma(TurmaVO turma) {
        this.turma = turma;
    }
    
    
}
